package com.zzj.ServiceImpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zzj.bean.BuyBean;
import com.zzj.dao.BuyDao;
import com.zzj.dao.DeptDao;
import com.zzj.dao.UserDao;
import com.zzj.service.BuyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;


import java.time.LocalDateTime;
import java.util.List;
@Service
public class BuyServiceImpl implements BuyService {
    @Autowired
    private BuyDao dao;
    @Autowired
    private DeptDao dao1;
    @Autowired
    private UserDao userDao;

    /**
     *
     * @param pageName
     * @param pageSize
     * @return 返回查询所有的采购信息，并且分页
     *流程：根据前端传入的用户Id,判断这个用户是不是生产副总
     * 根据传入的用户Id去查询他这个用户的角色是什么主任还是生产副总，以及采购科
     */
    @Override
    public PageInfo<BuyBean> selectAllBuy(@RequestParam(defaultValue = "1")int pageName,
                                          @RequestParam(defaultValue = "1")int pageSize, Integer userId) {
//        根据得到的用户Id去查询角色姓名

        int roleState=0;
        List<String> role = userDao.findOneRole(userId);
        System.out.println(role);
        if (role.contains("销售副总")&&role.contains("采购主任")){
            roleState=4;
        }
        else if (role.contains("销售副总")){
            roleState=2;
        }else if (role.contains("采购主任")){
            roleState=3;
        }else {
            roleState=1;
        }
//        switch (userId) {
//            case value:
//
//                break;
//
//            default:
//                break;
//        }
        PageHelper.startPage(pageName,pageSize);

        List<BuyBean> list = dao.findAllBuy(roleState);

//        ArrayList<BuyBean> list1 = new ArrayList<>();

//        list.forEach(item->{
//            if (role.contains(item.getDept().getDname())){
//                list1.add(item);
//            }
//
//        });

        PageInfo<BuyBean> info = new PageInfo<>(list);
        System.out.println(info);
        return info;
    }

    /**
     *
     * @param bean
     * @return 返回给控制层一个结果判断是否修改成功
     */
    @Override
    public boolean updateOneBuy(BuyBean bean) {
        int i = dao.updateOneBuy(bean);
        return i==1?true:false;
    }

    /**
     * 首先通过传入的对象中的部门名称查出部门Id,然后在插入Buy
     * @param bean
     * @return 返回是否插入成功
     */
    @Override
    public boolean insertOneBuy( BuyBean bean ,int userId) {

        /**
         * 逻辑增加，判断当前这个用户是什么角色，赋予相应的状态码
         * 插入本条记录中
         */
        int state=0;
        List<String> role = userDao.findOneRole(userId);
        if (role.contains("采购主任")){
            state=3;
        }else if (role.contains("销售副总")){
            state=2;
        }else {
            state=1;
        }
        bean.setBtime(LocalDateTime.now().toString().substring(0,LocalDateTime.now().toString().length()-4));
        bean.setBusetime(bean.getBusetime().substring(0,bean.getBusetime().length()-5));
        bean.setBstate(String.valueOf(state));
        int i = dao1.selectOneIdByName(bean.getDept().getDname());
        bean.setDid(i);
        int buy = dao.insertOneBuy(bean);
        return buy==1?true:false;
    }

    /**
     *根据前端传送的Id去修改他的状态，使得他的状态加一
     * @param id
     * @return 返回是否申报成功
     */
    @Override
    public boolean updateBuyStateById(int id) {

        int i = dao.updateOneBuyStateById(id);
        return i==1?true:false;
        }

    /**
     * 根据部门Id查询出这个部门里面所有的角色，如果没没有这个角色，那么拒绝访问
     * @param bid
     * @param userId
     * @return
     */
    private int a=0;
    @Override
    public boolean allertDeptName(int bid, int userId) {
//        String name1 = dao.findOneBuyName(bid);
        List<String> name1 = dao1.selectAllRoleByDid(bid);



        List<String> name2 = userDao.findOneRole(userId);


        name1.forEach(item->{

            name2.forEach(item1->{

                if (item.equals(item1)){
                    a=1;
                    return ;
                }
                a=0;
            });
        });
        System.out.println(a+"--------------------");
        if (a==1){
            return true;
        }

        return false;
    }

    /**
     * 把一条的采购记录的状态修改成0，间接的相当于删除了这条数据
     * @param id
     * @return
     */
    @Override
    public boolean deleteOneBuyStateById(int id) {
        int i = dao.deleteOneBuyStateById(id);
        return i==1?true:false;
    }

    /**
     * 根据
     * @param dname
     * @return
     */

    public PageInfo<BuyBean> selectAllBuy( String dname,@RequestParam(defaultValue = "1") int pageName,
                                           @RequestParam(defaultValue = "1") int pageSize) {
        PageHelper.startPage(pageName,pageSize);
        List<BuyBean> buy = dao.findAllBuyByDname(dname);
        PageInfo<BuyBean> info = new PageInfo<>(buy);


        return info;
    }


    /**
     * 根据
     * @param bid
     * @return
     */


}
